package com.ssy.lingxi.settle.accounts.service;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.dto.request.CorporateAccountDetailRequest;
import com.ssy.lingxi.dto.response.CorporateAccountDetailResponse;
import com.ssy.lingxi.settle.accounts.model.vo.response.DropdownItemVO;

import java.util.List;

/**
 * 通用接口
 * @author 伍将
 * @date 2020/11/2
 * @version 2.0.0
 */
public interface ICommonService {

    /**
     * 获取结算单据类型
     * @author 伍将
     * @date 2020/11/2
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List < com.ssy.lingxi.settle.accounts.mode.vo.response.DropdownItemVO>>
     **/
    Wrapper<List<DropdownItemVO>> getSettlementOrderType();

    /**
     * 获取策略下结算单据类型
     * @author 伍将
     * @date 2020/11/2
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List<com.ssy.lingxi.settle.accounts.mode.vo.response.DropdownItemVO>>
     **/
    Wrapper<List<DropdownItemVO>> getStrategySettlementOrderType();

    /**
     * 获取平台策略下结算单据类型
     * @author 伍将
     * @date 2020/11/5
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List<com.ssy.lingxi.settle.accounts.mode.vo.response.DropdownItemVO>>
     **/
    Wrapper<List<DropdownItemVO>> getPlatformStrategySettlementOrderType();

    /**
     * 获取结算状态
     * @author 伍将
     * @date 2020/11/2
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List < com.ssy.lingxi.settle.accounts.mode.vo.response.DropdownItemVO>>
     **/
    Wrapper<List<DropdownItemVO>> getSettlementStatus();

    /**
     * 获取开票状态
     * @author 伍将
     * @date 2020/11/2
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List < com.ssy.lingxi.settle.accounts.mode.vo.response.DropdownItemVO>>
     **/
    Wrapper<List<DropdownItemVO>> getReceiptInvoiceStatus();

    /**
     * 获取支付状态
     * @author 伍将
     * @date 2020/11/2
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List < com.ssy.lingxi.settle.accounts.mode.vo.response.DropdownItemVO>>
     **/
    Wrapper<List<DropdownItemVO>> getPayStatus();

    /**
     * 查询平台/会员对公账户
     * @param request 查询请求
     * @return 平台/会员对公账户
     */
    Wrapper<CorporateAccountDetailResponse> getCorporateAccountDetail(CorporateAccountDetailRequest request);
}
